/*
* 继承: 子类继承父类的属性和方法
*   目的: 可以让子类的 实例 能够调用父类的属性和方法
*   A: 父类 Parent Super
*   B: 子类 Child
* */

// 方案一: 原型继承
//  让父类中的属性和方法在子类实例的原型链上
//  CHILD.prototype = new PARENT();
//  CHILD.prototype.constructor = CHILD;
/*
*   特点:
*       1. JS不像其他语言中的继承一样(其他语言的继承一般是通过拷贝, 也就是子类继承父类的时候,会把父类的属性和方法都拷贝一份到子类中),JS他是把父类的原型放到子类实例的原型链上. 实例想要调去这些方法, 其实是基于__proto__原型链查找机制完成的.
*       2. 子类可以重写父类上方法(这样会导致父类其他的实例都会受到影响)
*       3. 父类中私有的或者公有的属性和方法, 最后都会变成子类公有的属性和方法
* */



function A(x) {
    this.x = x;
}
A.prototype.getX = function(){
    console.log(this.x);
};

function B(y) {
    this.y = y;//b1.y = 100
}
B.prototype = new A(200);
B.prototype.constructor = B;
B.prototype.getY = function(){
    console.log(this.y);
};

let b1 = new B(100);
// b1.y;// 100
b1.getY(); //100
// b1.x;// undefined ==>200
b1.getX();// getX is not a function  ==> 200



















